package org.service.car.helper;

import java.sql.SQLException;
import java.util.List;

import org.service.car.R;
import org.service.car.database.DatabaseHelper;
import org.service.car.pojo.Especialidade;
import org.service.car.pojo.Fornecedor;

import android.content.Context;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions;
import com.j256.ormlite.stmt.QueryBuilder;

public class MostrarFornecedor implements Runnable {

	private GoogleMap map = null;
	private Context context = null;
	private List<Integer> idsCategoria = null;
	private List<Fornecedor> fornecedores = null;
	private LatLngBounds bounds = null;

	public MostrarFornecedor(GoogleMap map, Context context,
			List<Integer> idsCategoria, LatLngBounds bounds) {
		this.map = map;
		this.context = context;
		this.idsCategoria = idsCategoria;
		this.bounds = bounds;
	}

	protected void doInBackground() {
		try {

			QueryBuilder<Especialidade, Integer> especialidadeQB = DatabaseHelper
					.getHelper(context).getEspecialidadeDao().queryBuilder();

			QueryBuilder<Fornecedor, Integer> fornecedorQB = DatabaseHelper
					.getHelper(context).getFornecedorDao().queryBuilder();

			especialidadeQB.selectColumns(Especialidade.COLUMN_FORNECEDOR_ID)
					.where()
					.in(Especialidade.COLUMN_CATEGORIA_ID, idsCategoria);
			fornecedores = fornecedorQB.where().exists(especialidadeQB).query();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	protected void onPostExecute() {

		BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.map_marker_fornecedor_icon);
		for (Fornecedor fornecedor : fornecedores) {
			Double latitude = fornecedor.getLatitude();
			Double longitude = fornecedor.getLongitude();
			LatLng position = new LatLng(latitude, longitude);
			String snippet = fornecedor.getSnnipet();
			String title = String.valueOf(fornecedor.getId()) + "-"
					+ fornecedor.getNome();
			 
		
				map.addMarker(new MarkerOptions()
				.position(position)
				.title(title)
				.snippet(snippet)
				.icon(icon));
		}
	}

	@Override
	public void run() {
		doInBackground();
		onPostExecute();
	}
}
